
unix:QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\'

defineReplace(MY_COPY){
	srcDir = $$1
	dstDir = $$2
	
    # 当windows环境下装有cywin等linux环境时，QMake会照成linux相关命令，此处做个判断#
    if(contains(QMAKE_COPY, cp)){
		srcDir ~= s%\%/%
		dstDir ~= s%\\\%/%
		#return($$QMAKE_MKDIR $$dstDir ; $$QMAKE_COPY -d $$replace($$list($$quote($$srcDir) $$dstDir), \\\, /) ;)#
		#(1)linux及类linux环境多条命令在同一行按顺序执行并且不判断结果时，采用分号';'分隔#
		#(2)在linux下假若一个子工程最后一条拷贝命令不成功，则会导致整个编译终止，主要是拷贝动态库那一环，因为有些单元测试工程没有动态库，因此先判断源文件存不存在，存在才拷贝，不存在则输出那文件不存在#
                macx {
                        return($$QMAKE_MKDIR $$dstDir ; if ls $$replace($$list($$quote($$srcDir)), \\\, /) >/dev/null 2>&1; then $$QMAKE_COPY $$replace($$list($$quote($$srcDir) $$dstDir), \\\, /) ; else echo "$$replace($$list($$quote($$srcDir)), \\\, /) not exist"; fi;)
                }
                else {
                        return($$QMAKE_MKDIR $$dstDir ; if ls $$replace($$list($$quote($$srcDir)), \\\, /) >/dev/null 2>&1; then $$QMAKE_COPY -d $$replace($$list($$quote($$srcDir) $$dstDir), \\\, /) ; else echo "$$replace($$list($$quote($$srcDir)), \\\, /) not exist"; fi;)
                }
		return($$QMAKE_MKDIR $$dstDir ; if ls $$replace($$list($$quote($$srcDir)), \\\, /) >/dev/null 2>&1; then $$QMAKE_COPY -d $$replace($$list($$quote($$srcDir) $$dstDir), \\\, /) ; else echo "$$replace($$list($$quote($$srcDir)), \\\, /) not exist"; fi;)
    }
    else{
		srcDir ~= s%/%\%
		dstDir ~= s%/%\\%
		return($$QMAKE_MKDIR \"$$dstDir\" & $$QMAKE_COPY $$replace($$list($$quote(\"$$srcDir\") \"$$dstDir\"), /, \\) &)#windows环境多条命令在同一行按顺序执行并且不判断结果时，采用'&'分隔#
    }
}

#MY_COPY_DIR用来将某目录复制到另一个目录中或者,把指定目录的某种后缀的文件复制到另一个目录中.#
#这里必须说明一下"MY_COPY_DIR"在有cp时是用cp没有时用xcopy.而这两个命令在路径表达上是有相同,也有差异.#
#请使用两者相同的语法进行复制.例如:#
#例1,将某目录复制到另一个目录中:#
#QMAKE_POST_LINK += $$MY_COPY_DIR($$PWD/boost/*, $$PROJECT_DEST_DIR/boost/)#
#例2,将某目录中的.h文件复制到另一个目录中:#
#QMAKE_POST_LINK += $$MY_COPY_DIR($$PWD/include/curl/*.h, $$PROJECT_INCLUDE_DIR)#
win32 {

    defineReplace(MY_COPY_DIR){
        srcDir = $$1
        dstDir = $$2
        srcDir ~= s%/%\%
        dstDir ~= s%/%\\%
        return($$QMAKE_MKDIR \"$$dstDir\" & xcopy /ey $$replace($$list($$quote(\"$$srcDir\") \"$$dstDir\"), /, \\) &)
    }

}

unix {
    defineReplace(MY_COPY_DIR){
        srcDir = $$1
        dstDir = $$2
        srcDir ~= s%\%/%
        dstDir ~= s%\\\%/%
	return($$QMAKE_MKDIR $$dstDir ; cp -rf $$replace($$list($$quote($$srcDir) $$dstDir), \\\, /) ;)#linux及类linux环境多条命令在同一行按顺序执行并且不判断结果时，采用分号';'分隔
    }
}


